﻿using System;
using System.Security.Cryptography;
using System.Text;


public class Security
{
	#region 32字符标准Md5

	/// <summary>
	/// 32字符标准Md5
	/// </summary>
	/// <param name="input">字符</param>
	/// <returns>md5码</returns>
	public string GetMd5Hash(string input)
	{
		// Create a new instance of the MD5CryptoServiceProvider object.
		MD5 md5Hasher = MD5.Create ();

		// Convert the input string to a byte array and compute the hash.
		byte[] data = md5Hasher.ComputeHash (Encoding.UTF8.GetBytes (input));

		// Create a new Stringbuilder to collect the bytes
		// and create a string.
		StringBuilder sBuilder = new StringBuilder ();

		// Loop through each byte of the hashed data 
		// and format each one as a hexadecimal string.
		for (int i = 0; i < data.Length; i++) {
			sBuilder.Append (data [i].ToString ("x2"));
		}

		// Return the hexadecimal string.
		return sBuilder.ToString ();
	}
	//----end function GetMd5Hash

	#endregion


	public void Encrypt(ref byte[] pData)
	{
		for (int i = 0; i < pData.Length; i++) {
			int b = Convert.ToInt32 (pData [i]);
			b = b ^ 0xa5;
			b = b << 4 | b >> 4;
			pData [i] = (byte)b;
		}
	}

	public void UnEncrypt(ref byte[] pData)
	{
		for (int i = 0; i < pData.Length; i++) {
			int b = Convert.ToInt32 (pData [i]);
			b = b << 4 | b >> 4;
			b = b ^ 0xa5;
			pData [i] = (byte)b;
		}
	}
}